package com.ruoyi.project.api.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.project.anquan.domain.SecurityYh;
import com.ruoyi.project.anquan.mapper.SecurityYhMapper;
import com.ruoyi.project.api.service.ApiISecurityYhService;

/**
 * 隐患Service业务层处理
 * 
 * @author ruoyi
 * @date 2020-05-13
 */
@Service
public class ApiSecurityYhServiceImpl implements ApiISecurityYhService 
{
    @Autowired
    private SecurityYhMapper securityYhMapper;

    /**
     * 按隐患类型统计统计
     * 
     * @param SecurityYh 事故事件
     * @return 事故事件
     */
    @Override
    public List<SecurityYh> statisticsByYhType()
    {
    	return securityYhMapper.statisticsByYhType();
    }
    /**
     * 按隐患整改类型统计
     * 
     * @param SecurityYh 事故事件
     * @return 事故事件
     */
    @Override
    public List<SecurityYh> statisticsByYhEditType()
    {
    	return securityYhMapper.statisticsByYhEditType();
    }
    
    /**
              * 统计隐患需要整改数量(最近四个月)
     * @param SecurityYh
     */
	@Override
    public JSONArray statisticsByYhStatusXy(){
		//统计需要整改数量(最近四个月)
    	List<SecurityYh> xyList= securityYhMapper.statisticsByYhStatusXy();
    	//统计及时整改数量(最近四个月)
    	List<SecurityYh> jsList=securityYhMapper.statisticsByYhStatusJs();
    	
    	JSONArray arr = new JSONArray();
    	String nameStr;
    	Double xySize; //需要整改数量
    	Double jsSize; //及时整改数量
    	String zgl;    //整改率
    	int xyNum = 0;
    	int jsNum = 0;
    	
    	//计算整改率
    	for(int i=0;i<xyList.size();i++) {
    		JSONObject js=new JSONObject();
    		nameStr = xyList.get(i).getName();
    		xySize  =Double.valueOf(xyList.get(i).getValue());
    		for(int j=0;j<jsList.size();j++) {
    			jsSize  =Double.valueOf(jsList.get(j).getValue());
    			
    			//判断月份是否相同(最近四个月)
    			if(nameStr.equals(jsList.get(j).getName())) {
    				zgl= xySize == 0.0 ? "0.0":String.format("%.2f", jsSize/xySize);
    				//js.put(nameStr, xySize+"_"+jsSize+"_"+zgl);
    				js.put("name",nameStr);
    				js.put("xyzg",xySize);
    				js.put("jszg",jsSize);
    				js.put("zgl",zgl);
    				xyNum +=xySize;
    				jsNum +=jsSize;
    				
    				arr.add(js);
    			}
        	}
    	}
    	
    	JSONObject zgSum=new JSONObject();
    	zgSum.put("xyzgSum",xyNum);
    	zgSum.put("jszgSum",jsNum);
    	arr.add(zgSum);
    	return arr;
    }
    
    /**
               * 统计隐患及时整改数量
     * @param SecurityYh
     */
    @Override
    public List<SecurityYh> statisticsByYhStatusJs(){
    	return securityYhMapper.statisticsByYhStatusJs();
    }
    
    /**
                * 根据部门统计本月的整改率
     */
	@Override
	public JSONArray statisticsByYhByzgl(SecurityYh securityYh) {
		
		//获取需要整改的列表
		List<SecurityYh> xyList= securityYhMapper.statisticsByYhByzgl(securityYh);
		
		//获取及时整改的列表
		securityYh.setYhStatus(2);
    	List<SecurityYh> jsList=securityYhMapper.statisticsByYhByzgl(securityYh);
    	JSONArray arr = new JSONArray();  
    	String nameStr;
    	Double xySize; //需要整改数量
    	Double jsSize; //及时整改数量
    	String zgl;    //整改率
    	
    	//计算整改率
    	for(int i=0;i<xyList.size();i++) {
    		JSONObject js=new JSONObject();
    		nameStr = xyList.get(i).getName();
    		xySize  =Double.valueOf(xyList.get(i).getValue());
    		for(int j=0;j<jsList.size();j++) {
    			jsSize  =Double.valueOf(jsList.get(j).getValue());
    			
    			//判断部门名称是否相同
    			if(nameStr.equals(jsList.get(j).getName())) {
    				zgl= xySize == 0.0 ? "0.0":String.format("%.2f", jsSize/xySize);
    				js.put("apartName",nameStr);
    				js.put("zgl",zgl);
    				arr.add(js);
    			}
        	}
    	}
    	
    	//根据隐患状态,统计本月隐患数量
    	List<SecurityYh> statusList=securityYhMapper.statisticsByYhstatusBy(securityYh);
    	String statusName;
    	String statusValue;
    	JSONArray arrTotal = new JSONArray();
    	for(int z=0;z<statusList.size();z++) {
    		JSONObject st=new JSONObject();
    		statusName = statusList.get(z).getName();
    		statusValue =statusList.get(z).getValue();
//    		隐患状态( 1待整改  2整改中  3已闭环 4待复查)
    		if(statusName.equals("1")) {
    			st.put("statusName","待整改 ");
    		}else if(statusName.equals("2")){
    			st.put("statusName","整改中 ");
    		}else if(statusName.equals("3")) {
    			st.put("statusName","已闭环 ");
    		}else {
    			st.put("statusName","待复查 ");
    		}
    		
    		st.put("statusValue",statusValue);
    		arrTotal.add(st);
    	}
    	
    	//
    	JSONObject returnData=new JSONObject();
    	returnData.put("monthRectify",arr);
    	returnData.put("monthTotal",arrTotal);
    	
    	//返回数组
    	JSONArray returnArr = new JSONArray();
    	returnArr.add(returnData);
		return returnArr;
	}
}
